package com.example.kotlindemo
// 定义一个父类 Animal
open class Animal{
    fun speak() {
        println("Animal speaking")
    }
}

// 定义一个子类 Dog，继承自 Animal
class Dog : Animal() {
    fun bark() {
        println("Dog barking")
    }
}

fun main(args: Array<String>) {


    // 创建一个 Dog 列表
    val dogs: List<Animal> = listOf(Animal(), Dog())

    // 将 Dog 列表赋值给 Animal 列表，因为 List 是协变的
    val animals: List<Animal> = dogs

    // 遍历 Animal 列表并调用 Animal 的方法
    for (animal in animals) {
        animal.speak() // 可以正常调用 Animal 的方法
//         animal.bark() // 错误！因为 animal 被视为 Animal 类型，不能调用 Dog 特有的方法
    }
}